//set类似于数组，但是成员的值都是唯一的，没有重复的值。
let set = new Set();
let array = [1,2,3,4,5,1,2,1];

array.forEach(val=>{
   set.add(val)
});
console.log(set);// { 1, 2, 3, 4, 5 }
console.log([...set]);// [ 1, 2, 3, 4, 5 ]
console.log(Array.from(set));// [ 1, 2, 3, 4, 5 ]
//set与对象
// 对象的写法
const properties = {
    'width': 1,
    'height': 1
};

if (properties['height']) {
    // do something
    console.log(properties['height'])
}

// Set的写法
const setProperties = new Set();

setProperties.add('width');
setProperties.add('height');
if (setProperties.has('height')) {
    // do something
}
//set实现多个数组的交集、并集、差集
let a = new Set([1,3,5,1]);
let b = new Set([11,13,5,4]);
console.log(new Set([...a,...b]));//并集
console.log(new Set([...a].filter(val=>b.has(val))));//交集
console.log(new Set([...a].filter(val=>!b.has(val))));//差集

//Map类似于对象，也是键值对的集合，但是“键”的范围不限于字符串，各种类型的值（包括对象）都可以当作键。
